虽然Redis 单机部署起来比较简单,但是但是可靠性低,且不能很好利用CPU多核处理能力,而且在生产环境中,为了保证高可用的状态,单机运行一般是不可行的,同时为了保证数据的读写分离,降低Redis节点的压力,先来看一看Redis的主从复制。
- 读写分离,扩展主节点的读能力,分担主节点读压力
- 容灾恢复,一旦主节点宕机,手动将从节点提升为主节点顶上
主从复制的搭建
安装Redis(一键安装脚本)
yum install -y gcc-c++ autoconf automake
cd /usr/local/
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
echo "redis installed"
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
这个脚本就是下载redis后安装到redis-stable文件夹中,同时开放防火墙的6379端口。
一主两从的部署方案
Master节点配置文件
sudo tee /usr/local/redis-stable/redis-master.conf <<-'EOF'
bind * -::*
port 6379
daemonize yes
logfile ./master.log
dir ./
dbfilename "master.rdb"
requirepass "123456"
appendonly yes
appendfilename "master.aof"
masterauth "123456"
EOF
新建redis-master.conf文件,同时设置端口号,日志文件保存位置,数据文件保存位置,rdb文件名称,开启aof,aof文件名称。 其中**masterauth "123456"**是从节点连接到主节点所需要的密码。
Master节点启动
cd /usr/local/redis-stable
./src/redis-server ./redis-master.conf
切换到redis目录文件,同时指定redis-master.conf配置文件启动。
Slave1节点配置文件
sudo tee /usr/local/redis-stable/redis-slave1.conf <<-'EOF'
bind * -::*
port 6379
daemonize yes
logfile ./slave1.log
dir ./
dbfilename "slave1.rdb"
requirepass "123456"
appendonly yes
appendfilename "slave1.aof"
replicaof 0.0.0.0 6379
masterauth "123456"
replica-read-only yes
EOF
大部分的配置信息和主节点配置文件相同,只是新增了几个额外的配置参数。
replicaof 0.0.0.0 6379 - 设置主服务器IP与通信端口 这里的ip替换为主节点的ip
masterauth "123456" - 与主服务器通信时的密码
replica-read-only yes - 从节点只读